로드 밸런싱
로드 밸런싱 (Load Balancing)
서비스 제공 초기 단계라면 적은 수의 클라이언트로 인해 서버 한 대로 요청에 응답하는 것이 가능하다. 하지만 서비스 규모가 커짐에 따라 클라이언트 수가 늘어나게 되면 자연스레 대량의 트래픽이 발생하게 된다. 이처럼 대량의 트래픽을 한 곳의 서버가 아닌 여러 곳의 서버로 분산해주는 기술이 로드 밸런싱이다.
tip
증가한 트래픽에 대처할 수 있는 방법은 크게 2가지가 있다.
- Scale-up: 서버 자체의 성능을 확장
- Scale-out: 서버의 수를 증설, 이는 곧 로드 밸런싱이 필요함.
로드 밸런싱 알고리즘
- 라운드로빈 방식 (Round Robin Method)
- 서버에 들어온 요청을 순서대로 돌아가며 배정하는 방식
- 클라이언트의 요청을 순서대로 분배하기 때문에 여러 대의 서버가 동일한 스펙을 갖고 있고, 서버와의 연결(세션)이 오래 지속되지 않는 경우에 활용하기 적합
- 가중 라운드로빈 방식 (Weighted Round Robin Method)
- 각각의 서버마다 가중치를 매기고 가중치가 높은 서버에 클라이언트 요청을 우선적으로 배분하는 방식
- 주로 서버의 트래픽 처리 능력이 상이한 경우 사용되는 방식
- A서버의 가중치가 5이고, B서버의 가중치가 2라면, 로드밸런서는 A서버에 5개 B서버에 2개의 요청을 전달한다.
- IP 해시 방식 (IP Hash Method)
- 클라이언트의 IP주소를 해싱하여 특정 서버로 매핑하는 방식
- 사용자가 항상 동일한 서버로 연결되는 것을 보장
- 최소 연결 방식 (Least Connection Method)
- 요청이 들어온 시점에 가장 적은 연결상태를 보이는 서버에 우선적으로 배분
- 자주 세션이 길어지거나, 서버에 분배된 트래픽들이 일정하지 않은 경우에 적합
- 최소 응답시간 방식 (Least Response Time Method)
- 서버의 현재 연결 상태와 응답시간을 고려하여 트래픽을 배분
로드 밸런서의 종류
보통 로드 밸런싱에는 L4 로드밸런서와 L7 로드밸런서가 가장 많이 활용된다. 그 이유는 L4 로드밸런서부터 포트 정보를 기반으로 로드를 분산하는 것이 가능하기 때문이다. 한 대의 서버에 각기 다른 포트 번호를 부여하여 다수의 서버 프로그램을 운영하는 경우라면 최소 L4 로드밸런서 이상을 사용해야 한다.
면접에 나올 수 있는 질문
- 트래픽이 증가하게 되었을 때, 이에 대처할 수 있는 대표적인 방법 2가지는?
- 로드 밸런싱이란?
참고
기여자
Junho Moon
📦